package com.keyware.utils.keycloud;


import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;

/** 
 * @ClassName: Signaturer
 * @Description: 签名工具类 （生成签名）
 * @author yanwj
 * @date 2015年12月8日 下午5:48:28
 * 
 */
public class Signaturer {
	/**
	 * @param priKeyText 私钥
	 * @param plainText 配置文件中的内容
	 * @return
	 */
	public static byte[] sign(byte[] priKeyText, byte[] plainText) {
		try {
			//PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(priKeyText));
			PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64Util.decode(priKeyText));
			KeyFactory keyf = KeyFactory.getInstance("RSA");
			PrivateKey prikey = keyf.generatePrivate(priPKCS8);
			// 用私钥对信息生成数字签名
			Signature signet = java.security.Signature.getInstance("MD5withRSA");
			signet.initSign(prikey);
			signet.update(plainText);
			byte[] signed = Base64Util.encodeToByte(signet.sign());
			return signed;
		} catch (java.lang.Exception e) {
			System.out.println("签名失败");
			e.printStackTrace();
		}
		return null;
	}
}